A software application may be configured to utilize independent threads of execution in order to offload the processing of certain functions from the main process. A user interface (UI) thread may be used to create windows and to manage the exchange of messages and user input communicated through the windows. For example, the UI thread may manage user-interface objects, such a dialog boxes, and user activities, such as resizing windows, and so forth.
The slow response time of the UI thread in processing the user's input affects the usefulness of the software application. At times, it may be difficult to identify the bottlenecks contributing to the slow response time or unresponsiveness of the UI thread. Each user's execution environment differs which makes reproducing or detecting a bottleneck difficult. Often users may employ different network connections or may utilize other programs that interact with the hardware and resources on the user's machine. In addition, the user interfaces may utilize graphical user interface objects in a variety of ways that may not have been foreseen or tested. Accordingly, the responsiveness of the UI thread is a key factor that affects the user's experience with the software application.